/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package presentacion.comun;

import hibernate.objeto.Farmacologico;
import java.util.Vector;
import javax.swing.JDialog;
import javax.swing.JTable;
import javax.swing.JTextField;
import logica.EvolucionLogica;
import logica.FarmacologicoLogica;
import presentacion.CapaPresentacion;
import presentacion.GestionPacientePresentacion;
import presentacion.tratamiento_medicamentoso.HistorialTratamientoMedicamentosoPresentacion;
import presentacion.tratamiento_medicamentoso.DatosFarmacologico;
import presentacion.utilidad.MensajePresentacion;
import presentacion.utilidad.tabla.MiModeloTabla;

/**
 *
 * @author Rafael
 */
public class ComunFarmacologicoPresentacion {

    private JDialog owner;

    private Farmacologico farmacologico;

    private JTable tablaFarmacologico;
    private JTable tablaFarmacologicoActivo;

    private JTextField filtrarFarmacologico;
    private JTextField filtrarFarmacologicoActivo;

    Vector<Farmacologico> vectorFarmacologico;
    Vector<Farmacologico> vectorFarmacologicoActivo;

    //Constructor para la funcionalidad Farmacologico
    public ComunFarmacologicoPresentacion(JDialog owner, Farmacologico farmacologico,
            JTable tablaFarmacologico, JTable tablaFarmacologicoActivo,
            JTextField filtrarFarmacologico, JTextField filtrarFarmacologicoActivo,
            Vector<Farmacologico> vectorFarmacologico,
            Vector<Farmacologico> vectorFarmacologicoActivo) {
        this.owner = owner;
        this.farmacologico = farmacologico;
        this.tablaFarmacologico = tablaFarmacologico;
        this.tablaFarmacologicoActivo = tablaFarmacologicoActivo;
        this.filtrarFarmacologico = filtrarFarmacologico;
        this.filtrarFarmacologicoActivo = filtrarFarmacologicoActivo;
        this.vectorFarmacologico = vectorFarmacologico;
        this.vectorFarmacologicoActivo = vectorFarmacologicoActivo;
    }

    /**
     * Abre las propiedades del objeto Farmacologico seleccionado.
     *
     */
    public void verDetalleFarmacologico() {
        if (farmacologico != null) {
            JDialog jDialog = new JDialog(owner, "Propiedades", true);
            DatosFarmacologico panel =
                    new DatosFarmacologico(
                    owner, farmacologico, tablaFarmacologico,
                    filtrarFarmacologico, vectorFarmacologico,
                    tablaFarmacologicoActivo, filtrarFarmacologicoActivo,
                    vectorFarmacologicoActivo);

            int width = (int) panel.getPreferredSize().getWidth() + 5;
            int height = (int) panel.getPreferredSize().getHeight() + 30;

            jDialog.setSize(width, height);
            jDialog.add(panel);
            jDialog.setResizable(false);
            jDialog.setLocationRelativeTo(null);
            jDialog.setVisible(true);
        }
    }

    /**
     * Finaliza el tratamiento del farmacologico.
     *
     */
    public void finalizarFarmacologico() {
        /* Finaliza cuando es usuario autorizado, es paciente no fallecido,
           evolucion activa y farmaco activo */
        if (CapaPresentacion.modoCarga || CapaPresentacion.modoModificacion) {
            if (EvolucionLogica.esEvolucionActiva(
                    farmacologico.getTratamientoMedicamentoso().getEvolucion())) {
                if (farmacologico.getEstadoFarmacologico().equalsIgnoreCase("Activo")) {
                    FarmacologicoLogica.finalizarFarmacologico(farmacologico,
                    GestionPacientePresentacion.getPaciente());

                    //Tabla tratamiento
                    if (vectorFarmacologico != null && filtrarFarmacologico != null &&
                            tablaFarmacologico != null) {
                        MiModeloTabla.cargarTablaFarmacologico(
                                vectorFarmacologico, tablaFarmacologico);
                        MiModeloTabla.seleccionarFilaDeTabla(
                                String.valueOf(farmacologico.getIdFarmacologico()),
                                tablaFarmacologico, null);
                    }

                    //Tabla activos, si es q es necesaria
                    if (vectorFarmacologicoActivo != null &&
                            filtrarFarmacologicoActivo != null &&
                            tablaFarmacologicoActivo != null) {
                        vectorFarmacologicoActivo.remove(farmacologico);
                        MiModeloTabla.cargarTablaFarmacologico(
                                vectorFarmacologicoActivo, tablaFarmacologicoActivo);
                        //Esconde la columna que contiene la fecha y el estado
                        tablaFarmacologicoActivo.removeColumn(
                                tablaFarmacologicoActivo.getColumnModel().getColumn(0));
                        tablaFarmacologicoActivo.removeColumn(
                                tablaFarmacologicoActivo.getColumnModel().getColumn(1));
                        MiModeloTabla.seleccionarFilaDeTabla(
                                String.valueOf(farmacologico.getIdFarmacologico()),
                                tablaFarmacologicoActivo, null);

                    }
                    if (owner instanceof HistorialTratamientoMedicamentosoPresentacion) {
                        HistorialTratamientoMedicamentosoPresentacion.personalizarTabla();
                    }
                }  else {
                    MensajePresentacion.informarEntidadNoActiva(farmacologico);
                }
            } else {
                MensajePresentacion.informarEntidadNoActiva(
                        farmacologico.getTratamientoMedicamentoso().getEvolucion());
            }
        } else {
            //Si no tiene acceso
            MensajePresentacion.informarUsuarioRestringido();
        }
    }

}
